
package eSchool.BL;

import eSchool.DataLayer.DAOFactory;
import eSchool.DataLayer.IUtilizadorDAO;
import eSchool.Utils.TextHelper;

public class Utilizador extends EntidadeBase  {
  
    public Utilizador() {  
      codUtilizador = TextHelper.EmptyString;
      palavraChave = TextHelper.EmptyString;
    }
    
    public Utilizador(String codUtilizador, String palavraChave) throws Exception {
        this.leDados(codUtilizador, palavraChave);
    }

    @Override
    public void gravaDados() throws Exception {
         DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
         IUtilizadorDAO utilizadorDAO = factory.getUtilizadorDAO();           
         utilizadorDAO.insertUtilizador(this);
    }
  
    @Override
    public void leDados() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void leDados(String codUtilizador, String palavraChave) throws Exception {
         DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
         IUtilizadorDAO utilizadorDAO = factory.getUtilizadorDAO();           
         utilizadorDAO.findUtilizador(this, codUtilizador, palavraChave);
    }

    public void leDados(String codUtilizador) throws Exception {
         DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
         IUtilizadorDAO utilizadorDAO = factory.getUtilizadorDAO();           
         utilizadorDAO.findUtilizador(this, codUtilizador);
    }
    
    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return codUtilizador;
            case 1:
                return palavraChave;
            case 2:
                return codGrupoUtilizador;
            case 3:
                return idDocfunc;
            default:
                return null;
       }
    }
    
    public int getColumnCount() {
        return 4;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return "codUtilizador";
            case 1:
                return "palavraChave";
            case 2:
                return "codGrupoUtilizador";    
            case 3:
                return "idDocfunc";
            default:
                return null;
       }
    }

    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return codUtilizador.getClass();
            case 1:
                return palavraChave.getClass();
            case 2:
                return codGrupoUtilizador.getClass();
            case 3:
                return ((Integer) idDocfunc).getClass();
            default:
                return null;
       }

    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

   
    public void setValueAt(Object aValue, int rowIndex, int columnIndex){
        
       switch (columnIndex) {
            case 0:
                codUtilizador = TextHelper.toString(aValue);
                break;
            case 1:
                palavraChave = TextHelper.toString(aValue);
                break;
            case 2:
                codGrupoUtilizador = TextHelper.toString(aValue);
                break;
            case 3:
                idDocfunc = Integer.parseInt(TextHelper.toString(aValue));
                
        }
    }

    
    // <editor-fold defaultstate="collapsed" desc="Getters & Setters">
    public String getCodUtilizador() {
        return codUtilizador;
    }

    public void setCodUtilizador(String val) {
        this.codUtilizador = val;
    }
    
    public String getPalavraChave() {
        return palavraChave;
    }

    public void setPalavraChave(String val) {
        this.palavraChave = val;
    }
    
    public String getCodGrupoUtilizador() {
        return codGrupoUtilizador;
    }

    public void setCodGrupoUtilizador(String val) {
        this.codGrupoUtilizador = val;
    }
    
    
    public int getIdDocfunc() {
        return idDocfunc;
    }

    public void setIdDocfunc(int idDocfunc) {
        this.idDocfunc = idDocfunc;
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Declaração de variáveis">
    private String codUtilizador;
    private String palavraChave;
    private String codGrupoUtilizador;
    private int idDocfunc;
    // </editor-fold>
}
